#include "graph.h"
#include <bits/stdc++.h>
#define ALL(x) begin(x), end(x)
using namespace std;

const int kN = 205;
int tot;
array<vector<int>, kN> vis, g;
array<array<int, kN>, kN> dis;

void dfs(int x) {
  int fa = LastRoad();
  int deg = NumberOfRoads();
  Move(1, x + 1);
  Move(LastRoad(), Color());
  vis[x] = vector<int> (deg + 1, 0);
  for(int i = 1; i <= deg; i++) {
    if(i == fa) {
      vis[x][i] = 1;
      continue;
    }else {
      Move(i, Color());
      if(Color() == 1) {
        vis[x][i] = 1;
        g[x].push_back(++tot);
        dfs(tot);
      }else {
        g[x].push_back(Color() - 1);
        Move(LastRoad(), Color());
      }
    }
  }
  if(fa != -1) Move(fa, Color());
}

const int kInf = 1e9;
array<int, kN> ans;

void Inspect(int R) {
  dfs(tot = 1);
  for(auto& k : dis) k.fill(kInf);
  for(int i = 1; i <= tot; i++) {
    for(int k : g[i]) {
      dis[i][k] = dis[k][i] = 1;
    }
  }
  for(int i = 1; i <= tot; i++) dis[i][i] = 0;
  for(int i = 1; i <= tot; i++) {
    for(int j = 1; j <= tot; j++) {
      for(int k = 1; k <= tot; k++) {
        dis[j][k] = min(dis[j][k], dis[j][i] + dis[i][k]);
      }
    }
  }
  for(int i = 1; i <= tot; i++) {
    for(int j = i + 1; j <= tot; j++) {
      ans[dis[i][j]]++;
    }
  }
  for(int i = 1; i <= R; i++) {
    Answer(i, ans[i]);
  }
}